""""
-1 collegati alla email, verica la presenza di nuovi messaggi con allegato, scarica allegato in scaricati da elaborare
-2 verifica tipo di allegato, esegui pdftohtml -c -s nomeallegato nome_file_uscita.html
-3 verifica correttezza output, quindi passa il file .html al programma di calcolo, infine preleva file .pdf generato e spostalo 
   file da trasferire in uscita
-4 prepara la mail di risposta e inviala al sender
"""



import email, getpass, imaplib, os,time

detach_dir = '.' # directory where to save attachments (default: current)
dwnl_dir = 'scaricati_da_elaborare/'
user = 'oozz.software@gmail.com'
pwd = 'erailventimarzo2011'

# connecting to the gmail imap server
m = imaplib.IMAP4_SSL("imap.gmail.com")
m.login(user,pwd)
m.select("INBOX") # scelgo la mailbox INBOX

#filtro i messaggi presenti con la regola UNSEEN, cioe' non letti.resp contiene 'OK' in caso di successo 'NO' insuccesso
#mentre items contiene la lista dei messaggi filtrati mediante la regola precedente
resp, items = m.search(None,'FROM', '') # 'UNSEEN'

for emailid in items:
    resp, data = m.fetch(emailid, "(RFC822)") # recupero delle email, "`(RFC822)`" significa recuperare tutto.
    email_body = data[0][1] # il contenuto della mail
    mail = email.message_from_string(email_body) # parsing della email alla ricerca di oggetti contenuti all'interno

    #controllo se sono presenti allegati 
    if mail.get_content_maintype() != 'multipart':
        continue

    #print "["+mail["From"]+"] :" + mail["Subject"]
    # mail['From'] contiene il nome del mittente e l'indirizzo di posta elettronica
    sender = mail["From"]
    #prelevo l-indirizzo email per utilizzo successivo.
    sender_address = sender[sender.index('<',0):sender.index('>',0)]
    print sender_address

    # we use walk to create a generator so we can iterate on the parts and forget about the recursive headach
    for part in mail.walk():
        # multipart are just containers, so we skip them
        if part.get_content_maintype() == 'multipart':
            continue

        # is this part an attachment ?
        if part.get('Content-Disposition') is None:
            continue
	t = time.ctime(time.time())
        filename =  t + '-' + sender_address + '-' + part.get_filename()
	
        counter = 1

        # if there is no filename, we create one with a sender_addressto identify it.
        if not filename:
            filename = t + '-' + sender_address + ' -' + 'part-%03d%s' % (counter, 'bin')
            counter += 1
	#e non esiste la dir dove inserire gli allegati, creala

	if not os.path.isdir(dwnl_dir):
		os.mkdir("scaricati_da_elaborare")
        dwl_path = os.path.join(dwnl_dir, filename)

        #Check if its already there
        if not os.path.isfile(dwnl_dir) :
            # finally write the stuff
            fp = open(dwl_path, 'wb')
            fp.write(part.get_payload(decode=True))
            fp.close()
